package com.xmtlxx.oms.domain.bo;

import com.xmtlxx.oms.domain.vo.BoxVo;
import com.xmtlxx.oms.domain.vo.TaskDtlVo;
import com.xmtlxx.common.core.domain.BaseEntity;
import com.xmtlxx.common.core.validate.AddGroup;
import com.xmtlxx.common.core.validate.EditGroup;
import com.xmtlxx.system.domain.SysOss;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;

import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;

/**
 * 出入库订单业务对象 t_task
 *
 * @author xmtlxx
 * @date 2022-08-12
 */

@Data
@EqualsAndHashCode(callSuper = true)
@ApiModel("出入库订单业务对象")
public class TaskBo extends BaseEntity {

    /**
     * 订单id
     */
    @ApiModelProperty(value = "订单id")
    private String id;

    /**
     * 订单编号
     */
    @ApiModelProperty(value = "订单编号", required = true)
    @NotBlank(message = "订单编号不能为空", groups = { AddGroup.class, EditGroup.class })
    private String taskNo;

    /**
     * 类型
     */
    @ApiModelProperty(value = "类型", required = true)
    @NotBlank(message = "类型不能为空", groups = { AddGroup.class, EditGroup.class })
    private String type;

    /**
     * 仓库
     */
    @ApiModelProperty(value = "仓库")
    private String storeId;

    /**
     * 物品数量
     */
    @ApiModelProperty(value = "物品数量", required = true)
    @NotNull(message = "物品数量不能为空", groups = { AddGroup.class, EditGroup.class })
    private Long nums;

    /**
     * 审批人
     */
    @ApiModelProperty(value = "审批人")
    private String checker;

    /**
     * 审批时间
     */
    @ApiModelProperty(value = "审批时间")
    private Date checkTime;

    /**
     * 审批状态
     */
    @ApiModelProperty(value = "审批状态")
    private String checkStatus;

    /**
     * 备注
     */
    @ApiModelProperty(value = "备注")
    private String remark;

    /**
     * 物流配送
     */
    @ApiModelProperty(value = "物流配送")
    private String delivery;

    /**
     * 部门ID
     */
    @ApiModelProperty(value = "部门ID")
    private Long deptId;

    /**
     * 状态
     */
    @ApiModelProperty(value = "状态")
    private String status;

    /**
     * 经度
     */
    @ApiModelProperty(value = "经度")
    private String lng;

    /**
     * 纬度
     */
    @ApiModelProperty(value = "纬度")
    private String lat;

    /**
     * 地址
     */
    @ApiModelProperty(value = "地址")
    private String address;

    /**
     * 联系方式
     */
    @ApiModelProperty(value = "联系方式")
    private String tel;

    /**
     * 姓名
     */
    @ApiModelProperty(value = "姓名")
    private String name;

    /**
     * 删除标识
     */
    @ApiModelProperty(value = "删除标识")
    private String delFlag;

    @ApiModelProperty(value = "物品清单")
    private List<TaskDtlVo> items;
    /**
     * 期望上门时间
     */
    @ApiModelProperty("期望上门时间")
    private Date expectTime;

    /**
     * 重量
     */
    @ApiModelProperty("重量")
    private BigDecimal weight;

    /**
     * 体积
     */
    @ApiModelProperty("体积")
    private BigDecimal volume;

    /**
     * 物证类型
     */
    @ApiModelProperty("物证类型")
    private String propertyType;

    /**
     * 申请时间
     */
    @ApiModelProperty("申请时间")
    private Date requestTime;

    /**
     * 归还时间
     */
    @ApiModelProperty("归还时间")
    private Date returnTime;
    /**
     * 调用原因
     */
    @ApiModelProperty("调用原因")
    private String dispatchRemark;
    /**
     * 收件单位
     */
    @ApiModelProperty("收件单位")
    private Long takeDept;
    /**
     * 收件人
     */
    @ApiModelProperty("收件人")
    private String takeContacts;
    /**
     * 收件电话
     */
    @ApiModelProperty("收件电话")
    private String takeTel;
    /**
     * 收件地址
     */
    @ApiModelProperty("收件地址")
    private String takeAddress;
    /**
     * 收件经度
     */
    @ApiModelProperty("收件经度")
    private String takeLng;
    /**
     * 收件纬度
     */
    @ApiModelProperty("收件纬度")
    private String takeLat;
    /**
     * 处置方式
     */
    @ApiModelProperty("处置方式")
    private String dealType;

    /**
     * 下发状态
     */
    @ApiModelProperty("下发状态")
    private String sendStatus;
    /**
     * 再次下发状态
     */
    @ApiModelProperty("再次下发状态")
    private String sendReStatus;
    /**
     * 完成时间
     */
    @ApiModelProperty("完成时间")
    private Date finishTime;

    @ApiModelProperty("是否车辆")
    private String buss;

    @ApiModelProperty(value = "是否授权")
    private String isTrailer;

    private String source;

    private List<String> ids;

    @ApiModelProperty(value = "使用的箱子数据")
    private List<BoxVo> boxList;

    private List<SysOss> oss;

    /**
     * 搜索条件
     */
    private String pno;
    private String pname;

    /**
     * 判断是修改申请还是下发操作
     */
    private String action;

    private String region;

    /**
     * 保管密码
     */
    @ApiModelProperty("保管密码")
    private String password;

    private String deptNo;

    @ApiModelProperty(value = "处置方式名称")
    private String dealTypeName;


    @ApiModelProperty("有无钥匙")
    private String carKey;

    @ApiModelProperty("有无行驶证")
    private String driveLicen;

    @ApiModelProperty("无其他物品")
    private String othreNone;

    private String registerBook;

    @ApiModelProperty("归还状态")
    private String returnStatus;
    @ApiModelProperty("归还调用申请ID")
    private String returnId;
    @ApiModelProperty("json参数")
    private String info;

    /**
     * add 新增
     * update 更新
     */
    private String submitType;

    @ApiModelProperty("承运商ID")
    private Long carrierDeptId;

    @ApiModelProperty("是否取证单")
    private String evidence;

    /**
     * 转调用单号
     */
    @ApiModelProperty("转调用单号")
    private String replaceNo;

    /**
     * 登记信息
     */
    @ApiModelProperty("登记信息")
    private String registerInfo;

    /**
     * 是否登记
     */
    @ApiModelProperty("是否登记")
    private String isRegister;


    /**
     * 发还参数接收
     */
    private String backer;//发还人
    private String backTel;//联系电话
    private String backCard;//身份证
    private List<SysOss> backOss;//身份证附件
    private String police;//民警
    private String policeTel;//民警电话
    private List<SysOss> repayOss ;//发还清单
    private List<SysOss> authorizeOss;//授权委托书
    private String relation;//委托人与当事人关系
    private String isDepute;//是否委托他人领取

    /**
     * 销毁参数
     */
    private List<SysOss> ruinOss;//销毁清单

    /**
     * 拍卖
     */
    private List<SysOss> saleOss;//拍卖清单

    /**
     * 出库参数数
     */
    private String pickuper;//取件人
    private String pickupTel;//联系电话
    private String pickupCardType;//证据类型
    private String pickupCard;//证件号

    @ApiModelProperty("物品关键字")
    private String proKey;
    private String revertMold;

    /**
     * 是否移交区县
     */
    private String isDevolve;

    private Long dispatcherId;

    private Boolean isPushTask = false;

    private String weekStarts;

    private String weekEnds;

    private Boolean isReturn = false;

    private List<SysOss> dealsOss;

    /**
     * 上门取件，待下发
     * 自行配送，待下发，未审核
     * 自行配送，待下发，已审核
     */
    private Boolean isSendWithCheck = false;

    /**
     * 处置
     */
    private Boolean isDealsWithCheck = false;

    /**
     * 来源
     */
    @ApiModelProperty("处置单来源")
    private String dealSource;

    private List<String> dealIds;

    private String instatus;

    private String outstatus;
    private List<SysOss> videoList;//视频

    private String signeeName;

    private String projectPickTime;

    /**
     * 行政类物品过滤 0 刑事  1 行政
     */
    @ApiModelProperty("行政类物品过滤")
    private String xzType;
}
